//
//  Problem7.swift
//  LeetCode - 整数反转
//
//  Created by 武侠 on 2020/7/3.
//  Copyright © 2020 zhulongiMac02. All rights reserved.
//

import UIKit
/*
 题目: 整数反转
 给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。
 
 示例 1: 输入: 123      输出: 321
 示例 2: 输入: -123     输出: -321
 示例 3: 输入: 120      输出: 21
 
 注意:
 假设我们的环境只能存储得下 32 位的有符号整数，则其数值范围为 [−231,  231 − 1]。请根据这个假设，如果反转后整数溢出那么就返回 0。
 */

class Problem7: NSObject {
    func solution() {
        let nums = [123, -123, 120]
        for num in nums {
            print(reverse(num))
        }
    }
    
    func reverse(_ x: Int) -> Int {
        var tmepx = x
        var rs:Int = 0
        
        while tmepx != 0 {
            rs = rs * 10 + tmepx % 10
            tmepx /= 10

            if rs > Int32.max || rs < Int32.min {
                return 0
            }
        }
        return (rs > Int32.max || rs < Int32.min) ? 0 : rs
    }
}
